home *** CD-ROM | disk | FTP | other *** search
Text File | 1988-12-15 | 2.9 KB | 61 lines | [TEXT/pdos] |
- Apple II
- Technical Notes
- _____________________________________________________________________________
- Developer Technical Support
-
-
- Mouse
- #4: Mouse Firmware Bug Affecting ServeMouse
-
- Revised by: Matt Deatherage November 1988
- Revised by: Rilla Reynolds January 1985
-
- This Technical Note documents a bug in the mouse firmware on the AppleMouse
- card which affects the way ServeMouse works.
- _____________________________________________________________________________
-
- There is a bug in the AppleMouse II 6805 firmware which may affect the way
- ServeMouse works in an application. If the application takes more than one
- video cycle (normally about 16 ms) to respond to a mouse-generated interrupt,
- then ServeMouse will not claim the interrupt. The 6805 returns an interrupt
- status byte of $00 (i.e., no mouse interrupt pending), and the 6502 firmware
- sets the carry bit (although the interrupt is also cleared by the ServeMouse
- call). This situation can be confusing, and under ProDOS or Pascal it can be
- lethal. We have identified the following solutions, any of which should work:
-
- If you are not working under an established operating system (i.e., ProDOS or
- Pascal):
-
- 1. Do not allow unclaimed interrupts to be fatal to your application.
- Ignore them.
- 2. Always service mouse interrupts within 1/60 of a second. If you
- are forced to disable interrupts for a longer period, first use
- SetMouse to set the mouse mode to 0, then call ServeMouse to clear
- any existing mouse interrupt. After interrupts are re-enabled,
- restore the mouse mode.
-
- If you are working under an established operating system (i.e., ProDOS or
- Pascal) for which unclaimed interrupts are fatal and the mouse is not the
- only interrupting device:
-
- 1. Write the mouse interrupt handler to claim all unclaimed
- interrupts and make sure the mouse interrupt handler is installed
- last, otherwise the interrupt will never get through to any
- interrupt handlers which follow that of the mouse.
-
- Note: This solution may cause cursor flicker by delaying the
- application's response to VBL interrupts.
-
- 2. Write a spurious interrupt handler (also known as a "daemon"), not
- associated with any device, which claims all unclaimed interrupts
- (i.e., clears the carry bit then exits). For the reason just
- mentioned, this interrupt handler must be installed last.
-
- Note: Under ProDOS, this limits the number if interrupting devices
- to three.
-
- This bug exists in the AppleMouse card, therefore you must deal with it when
- you are writing eight-bit programs for the Apple ][+, IIe, IIc and IIGS which
- use the mouse. The Apple IIGS does not have this bug in its internal mouse
- firmware, so sixteen-bit "native" mode programs are not affected by it.
-